In multiprocessor environments, it is possible to have a memory that is directly accessible by all the processors. However, the arbitration of access is relatively difficult to manage when a large number of processors are used. One approach currently being developed includes the association, with each processor or group of processors, of a small-sized memory (of some kilobytes) that is used as a local working memory. The local working memory contains a copy of a part of the total memory of the system. Furthermore, so that the processors may make the most efficient use of their computation capacities, memory management circuits are used to which the processors address simple requests.
The requests are used to simplify the wiring of the multiprocessor systems. One wire may be enough if the request is only a request for the exchange of information elements between the central memory and the local memory. The request for the exchange of information is managed entirely by a memory management circuit which, as a function of parameters corresponding to the processor that performs a request, will determine the direction of the transfer to be made, and the size of the block to be transferred, its position in the central memory and possible authorization of access in write and/or read mode. The memory management circuit and the processors then exchange the data elements in a synchronized manner, significantly reducing the number of wires to manage the exchange.
In a system of this kind, when one request is being processed, no other request can be taken into account before the end of the request. A priority processor may, however, be authorized to interrupt the request in progress for priority needs. In the event of interruption of the request, there occurs a desynchronization of the user devices with respect to the data exchange. The desynchronization makes the exchanged data elements erroneous and requires the exchange to be redone. Now, to carry a new exchange, it is necessary to make a new request which may go through after other requests.
In such a system, the local memories are generally small and very fast, and a central memory is generally very large and fairly slow. Since the use of elementary requests makes it necessary to carry out transfers of synchronized data elements, it causes a stopping of the user devices during the exchange of data elements with the central memory. Furthermore, the data transfer must be done at the speed of the slowest memory. Each user device is, therefore, slowed down by the central memory.